﻿using Microsoft.Extensions.Primitives;

namespace Acl.Messages;

/// <summary>
/// 发布选项
/// </summary>
public readonly record struct DistributionPublishOptions
{
    /// <summary>
    /// 回复时的消息主题
    /// </summary>
    public string? ReplyTo { get; init; }

    /// <summary>
    /// 消息头
    /// </summary>
    public Dictionary<string, StringValues>? Headers { get; init; }

   
    /// <summary>
    /// 当设置为true时，对PublishAsync的调用将在数据写入套接字后完成
    /// 默认值为false，对PublishAsync的调用将在发布命令写入命令通道后完成
    /// </summary>
    public bool? WaitUntilSent { get; init; }

    /// <summary>
    /// 用于处理序列化异常的可选回调。
    /// </summary>
    /// <remarks>
    /// 当WaitUntilSent设置为false时，序列化异常不会传播到调用方，但此回调将被调用并由串行器。
    /// </remarks>
    public Action<Exception>? ErrorHandler { get; init; }
}
